package com.rong.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Set;

/**
 * <pre>
 * 功能说明：
 * properties文件读取工具类
 * 创建日期：2014-8-15
 * 修改记录：
 * 2014-08-20 新增 getStringValue( String key , String...params )方法    BY KING
 * </pre>
 * @author KING
 * @version v1.1
 */
public class PropertiesUtil
{
	private static PropertiesUtil instance;
	private Properties p;
	
	public PropertiesUtil( String fileName )
	{
		if( null!=fileName )
		{
			try
			{
				p = new Properties();
				p.load( PropertiesUtil.class.getClassLoader().getResourceAsStream( fileName ) );
			}
			catch (IOException e)
			{
				System.out.println("找不到文件" + fileName);
				e.printStackTrace();
			}
		}
		else
		{
			System.out.println("找不到文件" + fileName);
		}	
	}
	


	/**
	 * <pre>
	 * 功能说明：
	 * 
	 * 创建日期：2014-8-15
	 * 修改记录：
	 *
	 * </pre>
	 * @author KING
	 * @version v1.0
	 * @param clazz
	 * @param fileName properties文件路径
	 * @return
	 */
	public static PropertiesUtil getInstance( String fileName )
	{
		if( null == instance ) 
		{
			return new PropertiesUtil( fileName );
		}	
		return instance;
	}
	
	/**
	 * <pre>
	 * 功能说明：
	 * 获取字符串值
	 * 创建日期：2014-8-15
	 * 修改记录：
	 *
	 * </pre>
	 * @author KING
	 * @version v1.0
	 * @param key
	 * @return
	 */
	public String getStringValue( String key ) 
	{
		if( null!= p )
		{
			return p.getProperty( key );
		}
		return null;
	}
	
	
	/**
	 * <pre>
	 * 功能说明：
	 * 获取字符串值( 带参数的 )
	 * 创建日期：2014-8-20
	 * 修改记录：
	 *
	 * </pre>
	 * @author KING
	 * @version v1.0
	 * @param key
	 * @param params 用param中的值替换{0},{1}...这些值
	 * @return
	 */
	public String getStringValue( String key , String...params ) 
	{
		if( null!= p )
		{
			String value = p.getProperty( key );
			if( null!=params && params.length > 0 && value.indexOf( "{" )>=0 )
			{
				int i = 0 ;
				for( String param : params )
				{
					value = value.replace( "{"+i+"}" , param );
					i++;
				}	
			}	
			return value;
		}
		return null;
	}
	
	/**
	 * <pre>
	 * 功能说明：
	 * 获取Int类型的值
	 * 创建日期：2014-8-15
	 * 修改记录：
	 *
	 * </pre>
	 * @author KING
	 * @version v1.0
	 * @param key
	 * @return
	 */
	public int getIntValue( String key )
	{
		if( null!= p && null!= p.getProperty( key ))
		{
			return Integer.parseInt( p.getProperty( key ) );
		}
		return 0;
	}
	
	/**
	 * <pre>
	 * 功能说明：
	 * 获取Float类型的值
	 * 创建日期：2014-8-15
	 * 修改记录：
	 *
	 * </pre>
	 * @author KING
	 * @version v1.0
	 * @param key
	 * @return
	 */
	public float getFlotValue( String key )
	{
		if( null!= p && null!= p.getProperty( key ) )
		{
			return Float.parseFloat( p.getProperty( key ) );
		}
		return 0;
	}
	
	/**
	 * <pre>
	 * 功能说明：
	 * 
	 * 创建日期：2014-8-18
	 * 修改记录：
	 *
	 * </pre>
	 * @author KING
	 * @version v1.0
	 * @param condition
	 * @return
	 */
	@SuppressWarnings( "unchecked")
	public  List<String> getKeys( String condition )
	{
		List<String> keyList = null;
		if( null!= p )
		{
			keyList = new ArrayList<String>();
			Set keys = p.keySet();
			String key ;
			for( Object k : keys )
			{
				key = k.toString();
				
				if( key.indexOf( condition ) == 0 )
				{
					keyList.add( key );
				}	
			}	
		}
		return keyList;
	}

}

